1. Field of the Invention
This invention is related computing systems, and more particularly to the field of memory controllers.
2. Description of the Related Art
Digital systems generally include a memory system formed from semiconductor memory devices such as static random access memory (SRAM), dynamic random access memory (DRAM), synchronous DRAM (SDRAM), double data rate (DDR, DDR2, DDR3, etc.) SDRAM including low power versions (LPDDR, LPDDR2, etc.) SDRAM, etc. With many technologies, the memory system is volatile meaning it generally retains data only when powered on but not when powered off. While such volatility may in some cases be seen as a disadvantage, such technologies often provide low latency access as compared to nonvolatile memories such as Flash memory, magnetic storage devices such as disk drives, or optical storage devices such a compact disk (CD), digital video disk (DVD), and BluRay drives.
The memory devices forming the memory system generally have a low level interface to read and write the memory according to memory device-specific protocols. The sources that generate transactions typically communicate via a higher level interface such as a bus, a point-to-point packet interface, etc. The sources can be processors, peripheral devices such as input/output (I/O) devices, audio and video devices, etc. Generally, the transactions include read memory operations to transfer data from the memory to the device and write memory operations to transfer data from the source to the memory. The term “transaction” may be used interchangeably with “memory operation” throughout this disclosure. Additionally, “read memory operations” may be more succinctly referred to herein as “read operations” or “reads”, and similarly “write memory operations” may be more succinctly referred to herein as “write operations” or “writes”.
Accordingly, a memory controller is typically included to receive the memory operations from the higher level interface and to control the memory devices to perform the received operations. The memory controller generally also includes queues to capture the memory operations, and can include circuitry to improve performance. For example, some memory controllers reorder memory operations in order to achieve high efficiency on the interfaces to the memory devices. However, some sources require that memory operations are completed in the order in which they were transmitted. As a result, it is possible for read data to be buffered in the memory controller, ready to be returned to a source, but waiting on read data from an earlier transaction that has been delayed due to a reordering of memory operations.